# -*- coding: utf-8 -*-

from django.db import models
from django.core.urlresolvers import reverse

class Caixa_geral(models.Model):
    class Meta:
        verbose_name_plural = 'Caixa Geral'
        
    valor_recebido = models.DecimalField(u'Total de Valores recebidos', max_digits = 20, decimal_places = 2, default = 0)
    valor_retirado = models.DecimalField(u'Total de Valores retirados', max_digits = 20, decimal_places = 2, default = 0)
    
    def __unicode__(self):
        return (u'Valores recebidos: R$ %.2f. Valores retirados: R$ %.2f - SALDO: R$ %.2f' % (float(self.valor_recebido), float(self.valor_retirado), float(self.valor_recebido) - float(self.valor_retirado))).replace('.', ',')

class Empresa(models.Model):
    nome = models.CharField(u'Nome da Empresa', max_length = 50, unique = True)
    slug = models.SlugField(u'Slug', unique = True)
    site = models.URLField(u'Página', null = True, blank = True)
    
    def get_absolute_url(self):
        return reverse('revenda.views.empresa', kwargs={'empresa_slug' : self.slug})
    
    def __unicode__(self):
        return self.nome

class Caixa(models.Model):
    caixa_geral = models.ForeignKey(Caixa_geral)
    empresa = models.ForeignKey(Empresa)
    valor_recebido = models.DecimalField(u'Valores recebidos', max_digits = 20, decimal_places = 2, default = 0)
    valor_retirado = models.DecimalField(u'Valores retirados', max_digits = 20, decimal_places = 2, default = 0)
    
    def __unicode__(self):
        return u'Caixa da empresa ' + unicode(self.empresa)

class Entrada(models.Model):
    caixa = models.ForeignKey(Caixa)
    valor = models.DecimalField(u'Valores de entrada', max_digits = 10, decimal_places = 2, default = 0)
    data = models.DateTimeField(u'Data da entrada deste valor', auto_now = True)
    objetivo = models.TextField(u'Objetivo da entrada deste valor')
    
    def __unicode__(self):
        return (u'R$ %.2f' % self.valor).replace('.', ',') + u' foi injetado na empresa %s. Objetivo: %s.' % (self.caixa.empresa, self.objetivo)

class Retirada(models.Model):
    caixa = models.ForeignKey(Caixa)
    valor = models.DecimalField(u'Valores de retirada', max_digits = 10, decimal_places = 2, default = 0)
    data = models.DateTimeField(u'Data da retirada deste valor', auto_now = True)
    objetivo = models.TextField(u'Objetivo da retirada deste valor')
    
    def __unicode__(self):
        return (u'R$ %.2f' % self.valor).replace('.', ',') + u' foi retirado da empresa %s. Objetivo: %s.' % (self.caixa.empresa, self.objetivo)

class Campanha(models.Model):
    empresa = models.ForeignKey(Empresa)
    
    nome = models.CharField(u'Referência da campanha', max_length = 50)
    slug = models.SlugField(u'Slug')
    
    inicio = models.DateField(u'Data de início')
    fim =    models.DateField(u'Data de término')
    
    total =    models.DecimalField(u'Valor total em R$', max_digits = 10, decimal_places = 2, default = 0)
    recebido = models.DecimalField(u'Valor total recebido em R$', max_digits = 10, decimal_places = 2, default = 0)
    
    concluido_em = models.DateField(u'Data de término', null = True, blank = True)
    concluido = models.BooleanField('A campanha foi concluída', default = False)
    
    def get_absolute_url(self):
        return reverse('revenda.views.empresa_campanha', kwargs={'empresa_slug' : self.empresa.slug, 'campanha_slug' : self.slug})
    
    def __unicode__(self):
        return self.empresa.nome + u' - ' + self.nome
    
    def save(self, *args, **kwargs):
        if self.concluido_em != None and self.concluido_em != '':
            self.concluido = True
        else:
            self.concluido = False
        
        super(Campanha, self).save(*args, **kwargs)

class Cliente(models.Model):
    nome = models.CharField(u'Nome do Cliente', max_length = 50, unique = True)
    
    def __unicode__(self):
        return self.nome.upper()

class Produto(models.Model):
    empresa = models.ForeignKey(Empresa)
    
    codigo = models.CharField(u'Código', max_length = 6)
    nome = models.CharField(u'Nome da Empresa', max_length = 200)
    
    preco_sugerido = models.DecimalField(u'Preço sugerido', max_digits = 10, decimal_places = 2)
    
    pontos_sugeridos = models.IntegerField(u'Pontos sugeridos', default = 0)
    
    def __unicode__(self):
        return self.nome.upper()

class Item(models.Model):
    campanha = models.ForeignKey(Campanha)
    cliente = models.ForeignKey(Cliente)
    produto = models.ForeignKey(Produto)
    quantidade = models.IntegerField(u'Quantidade', default = 1)
    preco = models.DecimalField(u'Preço deste item', max_digits = 10, decimal_places = 2)
    valor_pago = models.DecimalField(u'Valor pago por este item', max_digits = 10, decimal_places = 2, default = 0)
    pontos = models.IntegerField(u'Pontos (Quando se aplica)', default = 0)
    ativado = models.BooleanField(u'Ativado', default = True)
    
    def __unicode__(self):
        return self.produto.codigo + ' - ' + self.produto.nome
    